跳到主要内容

Kindling-OriginX工作原理

最后 更新

北极星因果指标(龙蜥社区与 Kindling 社区联合发布了北极星排障指标体系)

通过分析 TraceProfiling 数据,能够得到一次请求在Span中执行具体花了多少时间在CPU、网络、存储、等待。将 TraceProfiling 数据进行聚合可以得到北极星因果指标,从而指导标准化的排障过程。 image.png

指标说明

北极星因果指标-CPU时间

程序在CPU资源上所消耗的时间

  • OnCPU

程序代码执行所消耗的CPU cycles,可以通过程序火焰图确认代码在 CPU上执行消耗的时间与代码堆栈.

  • Runqueue

线程的状态是Ready,如果CPU资源是充分,线程应该被调度到 CPU上执行,但是由于各种原因,线程并未调度到CPU执行,从而产生的等待 时间。

北极星因果指标-网络时间

网络时间属于两次OnCPU时间之间的OffCPU时间

  • 网络时间打标过程

第一次OnCPU最后一个系统调用执行为sock write与第二次 OnCPU第一个系统调用为sock read,也可以理解为网络包出网卡至网络包从网卡收回的 时间。

  • 网络时间分类

DNS,TCP建连,常规网络调用

北极星因果指标-存储时间

属于两次OnCPU时间之间的OffCPU时间

  • 存储时间打标过程

第一次OnCPU最后一个系统调用执行为VFS read/write与第二次 OnCPU第一个系统调用为VFS read/wirte。

  • 存储时间真实情况

存储真实执行情况,由于内核的pagecache存在,所以绝大多数VFS read/write从程序视 角看:执行时间不超过1毫秒。

北极星因果指标-等待时间

  • futex

通常指的是一个线程在尝试获取一个futex锁时因为锁已经被其他线程占用而进入等待状态的时间。在这段时间内,线程不会执行任何操作,它会被内核挂起。

  • mutex_lock

线程在尝试获取互斥锁时,因为锁已经被其他线程持有而进入等待状态的时间长度。这段时间对于程序的性能至关重要,因为在等待期间,线程不能执行任何有用的工作。

更多信息请参考北极星指标介绍

基于北极星因果指标的推理过程

对于单次接口进行统计分析能够得到开发者更容易理解的时间消耗视角 image.png

然后对每次接口执行的数据做历史基线即可得到接口历史时间消耗基线 image.png

最终当请求异常之时,通过对比异常数据与基线能够得到排障方向 image.png

对节点请求进行统计可以得到节点的故障特征

image.png

Kindling-OriginX 的故障根因推导

本质上而言,北极星因果指标已经指明了故障线索方向,而Kindling-OriginX根据故障线索方向,集成各种可观测性数据,还原故障现场,给出故障证据链条,用户在一个界面就可以将所需要的指标与日志收集齐全,并确认故障根因是否准确。

更多信息参考

KubeCon 2023 中国 :Trace-Profiling: A New Way About How to Track Application Behavior - Cheng Chang

KCD 杭州 :基于 eBPF 采集的排障北极星指标构建故障根因推导流程

eBPF 大会 2024 西安 : 解密如何使用北极星指标体系如何实现根因推理

Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力